package com.zzl.bonds.ticket.constant.status;

/**
 * 申请单的票据状态
 * 开单
 * 确认中：
 * 1 内部复核中
 * 2 平台审批中
 * 3 收单企业签收中
 * 失败：
 * 14 收单企业驳回
 * 12 内部复核未通过
 * 13 平台审批未通过
 * 17 已撤销
 * 成功：
 * 4 已签收
 *
 * @author : gull
 * @date : 2022/2/16 15:06
 */
public enum TicketLogStatusEnum {

    OPEN("31", "开立中"),
    TRANSFER("32", "转让中"),
    /**
     * 开单待复核
     */
    START("0", "开始"),
    OPEN_PENDING_REVIEW("1", "开立中-内部复核中"),
    OPEN_PENDING_APPROVE("2", "开立中-平台审批中"),
    OPEN_PENDING_SIGN("3", "开立中-签收方签收中"),
    NORMAL_HOLDING("4", "已签收"),
    /**
     * 自己企业 复核未通过
     */
    REVIEW_REJECT("12", "失败-内部复核未通过"),
    /**
     * 平台审批未通过
     */
    APPROVE_REJECT("13", "失败-平台审批未通过"),
    /**
     * 供应商 拒绝签收
     */
    REFUSE("14", "失败-签收方驳回"),
    CANCEL("17", "已撤销"),

    TRANSFER_PENDING_REVIEW("5", "转让中-内部复核中"),
    TRANSFER_PENDING_APPROVE("6", "转让中-平台审批中"),
    TRANSFER_PENDING_SIGN("7", "转让中-签收方签收中"),
    TRANSFER_SUCCESS("8", "成功-已签收"),
    TRANSFER_RETAINED("27", "转让留存"),
    /**
     * 融单状态
     */

    FINANCE_PENDING_REVIEW("9", "融资中-内部复核中"),
    FINANCE_PENDING_APPROVE("10", "融资中-平台审批中"),
    FINANCE_PENDING_SIGN("19", "融资中-银行处理中"),

    FINANCE_PENDING_LOAN("20", "融资中-待放款"),

    FINANCE_SUCCESS("11", "融资成功-已放款"),
    FINANCE_RETAINED("21", "融资留存"),

    INVALID("18", "该条凭证已失效"),

    WAITING_PAYMENT("15", "等待兑付"),
    PAID("16", "已经兑付"),

    ;
    private String code;

    private String name;


    TicketLogStatusEnum(String code, String name) {
        this.code = code;
        this.name = name;
    }


    /**
     * 通过code获取枚举对象
     *
     * @param code code值
     * @return 枚举对象
     */
    public static TicketLogStatusEnum getStatus(String code) {
        for (TicketLogStatusEnum value : TicketLogStatusEnum.values()) {
            if (value.code.equals(code)) {
                return value;
            }
        }
        return null;
    }

    /**
     * 通过code获取枚举对象
     *
     * @param code code值
     * @return 枚举对象
     */
    public static String getName(String code) {
        for (TicketLogStatusEnum value : TicketLogStatusEnum.values()) {
            if (value.code.equals(code)) {
                return value.name;
            }
        }
        return null;
    }

    public String getCode() {
        return code;
    }

    public String getName() {
        return name;
    }
}
